【レポート】S3上のエクサバイト級データをクエリ可能な「Amazon Redshift Spectrum」の紹介/AWS Solution Days 2017 ~AWS DB Day~ #AWSDBDay
2017年07月05日(水)に、大崎ブライトコアホールにて『AWS Solution Days 2017』なるイベントが開催されました。
イベントのコンセプトは以下(イベント紹介サイトより抜粋)。当エントリでは『S3でエクサバイトのデータをクエリ可能な「Amazon Redshift Spectrum」の紹介』セッションの模様をレポートします。
ちなみに当イベントは
目次
セッションレポート
登壇者及びセッションの内容詳細は以下の通りです。
Michalis Petropoulos(Amazon Web Services, Inc. Software Development Manager, Amazon Redshift)
セッション概要:
Amazon Redshift Spectrum は Amazon Redshift の分析機能をデータウェアハウスに蓄積されたデータ以外に拡張し、Amazon S3 に蓄積されたデータも分析対象とする新しい機能でエクサバイトのデータに対して SQL クエリを実行することができます。
Redshift Spectrum は洗練されたクエリ最適化機能を適用し、数千のノードにわたってスケーリング処理を実行します。このセッションでは、Redshift Spectrum を使用して Amazon S3 に保存されたデータのクエリを簡単に開始する方法およびコストを節約するためにサポートされているクエリー、データ形式など、その他の Tips も含めてご説明します。
Amazon Redshift Spectrum登場までの背景
- 取り扱うデータセットが非常に膨大かつ多様なフォーマットになっているのであれば、「Innovating」を始める事が必要。
- では、そんな状況で「収集」「蓄積」「処理・加工」「分析」「共有」を行っていくか。
- ビッグデータの取り扱いにおける課題
- 生成:AWS利用企業の中には1日あたり1ペタバイト以上のデータが生成されているケースも有る
- 収集&蓄積:S3にペタバイト、エクサバイト級のデータを蓄積
- 分析:ここの制約が大きいと、分析出来ないデータが増加していく
- 現在の課題:"ダークデータ"問題(生成された多くのデータが分析されない)
- データ分析で活用出来るサービスとしてはAmazon EMRとAmazon Redshiftがあるが、敢えて両者をORで比較すると以下のような形となる。どちらも良い点があるものの、両者の"良いとこ取り"したものは無い。
- 欲しいものは...
- 洗練されたクエリ最適化機能 and スケールアウトな処理
- 超高速なパフォーマンス and オープンフォーマットのサポート
- ローカルディスクに対するスループット and S3のスケール
Amazon Redshift Spectrumとは
そんな中登場したのが「Amazon Redshift Spectrum」。大規模スケールアウトの処理層を使い、S3上のデータに対してSQLを実行する事が出来ます。
- Amazon Redshift Spectrum - Run SQL queries directly against exabytes of data in Amazonn S3.
- Amazon Redshift Spectrum – S3のデータを直接クエリし、エクサバイトまでスケール可能 | Amazon Web Services ブログ
Redshift Spectrumを使ってクエリを投げ、結果が返ってくるまでの処理の流れは以下のような形となります。
- クエリを投入
- クエリはリーダーノード上で最適化され、コンパイル。どのデータをローカルストレージから得て、どれをSpectrum層にリクエストするかを決定
- コンピュートノードはデータカタログからパーティション情報を取得(Dynamically prune partitions)
- 各コンピュートノードはAmazon Redshift Spectrum層に対して複数のリクエストを送信
- Amazon Redshift Spectrum層のノードがS3データをスキャン
- Amazon Redshift Spectrum層でデータの射影、フィルタ、ジョイン、アグリゲーションを実行
- Redshiftクラスタ内でローカルディスク上とのジョインや最終的なアグリゲーションが実行される
- 結果がクライアントに戻される
Amazon Redshift Spectrum実践例
「S3上のエクサバイト級のデータに対して分析クエリを投入」するケースを、シンプルなSQLを組むところからそのSQLを発展させて行く手順についての解説がありました。
実行結果と、比較対象とした手法(1000ノードのHiveクラスタを使った検証)からどのように処理を効率化、改善して処理時間を削減したかについての解説もありました。新機能発表当時「5年掛かっていたものが2分半で」と言及されていた部分がこういう形で実現されていたのか、というのが解説された形になりますね。
Amazon Redshift Spectrumの機能・特徴
Amazon Redshift Spectrumには幾つか特徴があり、それらの特徴毎にその詳細が解説されました。
高速な処理
- Amazon Redshiftのコストベースのオプティマイザを活用
- 述部をプッシュダウンし、アグリゲーションやジョインを削減
- Dynamic partition eliminationにより処理対象データを削減
- S3データへのクエリ実行を自動的にパラレル化
- Amazon Redshiftクラスタ内での効率的なジョイン処理
高い費用対効果
- Amazon Redshiftクラスタの料金+S3データの1TBスキャンあたり5ドル
- 各クエリは1000台ものSpectrum層コンピュートノードのパワーを活用
- 課金対象となるスキャンデータの削減及びパフォーマンスの向上が可能
セキュア
標準SQL
- 既存のSQLやBIアプリケーションとシームレスに連携
- 複雑なジョイン、ネストクエリー、ウインドウ関数をサポート
- 任意のキーでS3上のパーティションをサポート
外部スキーマの定義とテーブルの作成
- Amazon Redshift Spectrum 用の外部スキーマの作成 - Amazon Redshift
- Amazon Redshift Spectrum 用の外部テーブルの作成 - Amazon Redshift
Amazon Redshift Spectrumの各種サポート要素は以下の通り。
- Creating Data Files for Queries in Amazon Redshift Spectrum - Amazon Redshift
- Creating External Tables for Amazon Redshift Spectrum - Amazon Redshift
Amazon EMRを使ったParquet及びORCの変換については以下GitHubリポジトリにツールが展開されている。
AWSにおける今後の分析環境の展望
最後にRedshift Spectrumを含めたAWSサービス群を用いて、どのような「新たな分析アーキテクチャ」を形作っていくかについて説明がありました。構成としては以下の通り。真ん中行の「サーバレスコンピュート」の領域がスケールアウトが可能な部分であるとし、セッションの発表を終えました。
まとめ
という訳でAmazon Redshift Spectrumに関する機能及び今後の分析アーキテクチャに関する紹介セッションのご紹介でした。Redshift Spectrumについてはまだリリースされて日も浅いですが、非常に可能性のある機能である事が当セッションの解説からも読み取る事が出来ました。AWSにおけるデータ分析環境についてはまだまだ進化・発展が期待出来そうです。